// components/loading/loading.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 是否显示加载状态
    show: {
      type: Boolean,
      value: false
    },
    // 加载文本
    text: {
      type: String,
      value: '加载中...'
    },
    // 加载类型：spinner, dots, pulse
    type: {
      type: String,
      value: 'spinner'
    },
    // 大小：small, medium, large
    size: {
      type: String,
      value: 'medium'
    },
    // 颜色
    color: {
      type: String,
      value: '#1989fa'
    },
    // 是否全屏显示
    fullscreen: {
      type: Boolean,
      value: false
    },
    // 背景遮罩透明度
    maskOpacity: {
      type: Number,
      value: 0.5
    },
    // 是否显示文本
    showText: {
      type: Boolean,
      value: true
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    sizeMap: {
      small: 30,
      medium: 40,
      large: 50
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 点击遮罩层
     */
    onMaskTap: function() {
      // 触发遮罩点击事件
      this.triggerEvent('masktap')
    },

    /**
     * 获取加载器大小
     */
    getLoaderSize: function() {
      return this.data.sizeMap[this.properties.size] || this.data.sizeMap.medium
    }
  },

  /**
   * 组件生命周期
   */
  lifetimes: {
    attached: function() {
      // 组件实例被放入页面节点树后执行
    },
    
    detached: function() {
      // 组件实例被从页面节点树移除后执行
    }
  },

  /**
   * 组件所在页面的生命周期
   */
  pageLifetimes: {
    show: function() {
      // 页面被展示
    },
    
    hide: function() {
      // 页面被隐藏
    }
  }
})